home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 081 / xlatrgen.arc / XLATLIST.DOC < prev    next >
Text File  |  1987-12-16  |  63KB  |  1,681 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                               XlatList and RouteGen
  7.  
  8.                                   User's Manual
  9.  
  10.  
  11.  
  12.  
  13.  
  14.                               Copyright 1985,86,87
  15.                                        by
  16.                        System Enhancement Associates, Inc.
  17.                                ALL RIGHTS RESERVED
  18.  
  19.  
  20.  
  21.  
  22.  
  23.                                 TABLE OF CONTENTS
  24.  
  25.  
  26.      _______                                                           ____     Section                                                           Page
  27.  
  28.      Introduction  ....................................................   1
  29.      License  .........................................................   1
  30.      XlatList  ........................................................   2
  31.      XlatList control file  ...........................................   3
  32.         Your own network address  .....................................   3
  33.         Country  ......................................................   3
  34.         Mode of operation  ............................................   3
  35.         User directory  ...............................................   4
  36.         Forcing user directory entries  ...............................   4
  37.         Node list report  .............................................   5
  38.         Node list report index  .......................................   5
  39.         Summary report  ...............................................   5
  40.         Comments report  ..............................................   5
  41.         Dashes in phone numbers  ......................................   6
  42.         Routing data files  ...........................................   6
  43.         Processed node list  ..........................................   6
  44.         Point net gateways  ...........................................   6
  45.         Maximum baud rate  ............................................   6
  46.         Private node lists  ...........................................   7
  47.         Public node lists  ............................................   7
  48.         Automatic cleanup  ............................................   8
  49.         SEAdog node list prefixes  ....................................   8
  50.         Inserting phone numbers  ......................................   8
  51.         Inserting baud rates  .........................................   8
  52.         Inserting nets from other zones  ..............................   9
  53.         Telephone dialing instructions  ...............................   9
  54.         The cost table  ...............................................  10
  55.         Multiple input files  .........................................  11
  56.         Command line arguments  .......................................  11
  57.      Multiple zones  ..................................................  12
  58.      RouteGen  ........................................................  13
  59.      Lists of nodes  ..................................................  16
  60.      Predefined macros  ...............................................  16
  61.         By network or region  .........................................  16
  62.         By area code  .................................................  16
  63.         By country code  ..............................................  17
  64.         By node list flags  ...........................................  17
  65.         By routing hub  ...............................................  17
  66.         By a list in a file  ..........................................  17
  67.         By baud rate  .................................................  18
  68.         By real address  ..............................................  18
  69.         Everybody!  ...................................................  18
  70.         Except!  ......................................................  19
  71.      RouteGen Control Verbs  ..........................................  20
  72.         Your own network address  .....................................  20
  73.         Mode of operation  ............................................  20
  74.         Multiple output files  ........................................  20
  75.         Multiple input files  .........................................  20
  76.         Defining your own macros  .....................................  21
  77.         Defining BIG macros  ..........................................  21
  78.         Different schedules  ..........................................  21
  79.         Displaying a list  ............................................  21
  80.         Writing a list to a file  .....................................  21
  81.         Conditionals  .................................................  21
  82.      More on conditional statements  ..................................  23
  83.      Node list size limits  ...........................................  24
  84.      Warranty  ........................................................  26
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.                                   INTRODUCTION                                  INTRODUCTION
  122.  
  123.  
  124.      XlatList and RouteGen are utilities to assist system operators
  125.                                                              XlatList     (sysops) in making use of St. Louis format node lists.  XlatList is
  126.      used to translate a St. Louis format node list into useable form.
  127.      RouteGen     RouteGen is used in conjunction with XlatList to assist in the
  128.      creation of routing files.
  129.  
  130.      Each of these utilities is capable of functioning in any one of three
  131.             SEAdog       Fido           Opus     modes: SEAdog mode, Fido mode, and Opus mode.  The differences will be
  132.      described where applicable.
  133.  
  134.  
  135.  
  136.                                      LICENSE                                     LICENSE
  137.  
  138.      XlatList and Routegen are the copyrighted property of System
  139.      Enhancement Associates, Inc.  You are granted a limited license to use
  140.      them, and to copy and distribute them, provided that the following
  141.      conditions are met:
  142.  
  143.       1) No fee may be charged for such copying and distribution.
  144.  
  145.       2) They may ONLY be distributed in their original, unmodified state.
  146.  
  147.                   ___      3) They may not be distributed, in whole or in part, as part of any
  148.          commercial product or service without the express written
  149.          permission of System Enhancement Associates, Inc.
  150.  
  151.  
  152.      Contributions for the use of these programs will be appreciated, and
  153.      should be sent to:
  154.  
  155.                        System Enhancement Associates, Inc.
  156.                           21 New Street, Wayne NJ 07470
  157.  
  158.      You may not use these products in a commercial environment or a
  159.      governmental organization without paying a license fee of $35.  Site
  160.      licenses are available.
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.      XlatList and RouteGen                                     Page 1
  181.                                     XLATLIST                                    XLATLIST
  182.  
  183.  
  184.      XlatList is a "predigester" for the St. Louis format node list which
  185.      turns it into a node list usable by SEAdog, Fido, or Opus.  It looks
  186.      on disk for a file of the name "NODELIST.nnn", where "nnn" is some
  187.      number.  If it finds more than one such file, then it picks the one
  188.      with the highest number.
  189.  
  190.      For example, if you have four files on disk named:
  191.  
  192.          NODELIST.312
  193.          NODELIST.319
  194.          NODELIST.326
  195.          NODELIST.BBS
  196.  
  197.      Then XlatList will read NODELIST.326, and ignore the others.  In fact,
  198.      you should be careful about this just after New Year's Day.  St. Louis
  199.      format node lists use the julian date for the extension, so XlatList
  200.      will almost always pick the proper one.  But at the start of the year
  201.      the numbering starts over at 001.  If you have any older node lists
  202.      lying around, XlatList will pick the oldest list from the previous
  203.      year, which probably isn't what you want.
  204.  
  205.      If you have one or more NODEDIFF.nnn files on your disk, then XlatList
  206.      will select the one with the highest number and attempt to apply it to
  207.      the selected nodelist, in hopes of making a new node list file to use.
  208.  
  209.      For example, if you have five files on disk named:
  210.  
  211.          NODELIST.312
  212.          NODELIST.319
  213.          NODEDIFF.319
  214.          NODEDIFF.326
  215.          NODELIST.BBS
  216.  
  217.      Then XlatList will try to apply the changes in NODEDIFF.326 against
  218.      the data in NODELIST.319 in an attempt to create NODELIST.326.  If it
  219.      succeeds, it will scan the newly created NODELIST.326.  Otherwise, it
  220.      will scan NODELIST.319.
  221.  
  222.      If the difference file includes a CRC check (given as a decimal number
  223.      following a colon on the first line), then XlatList will compute a CRC
  224.      value for the created node list and compare it with the CRC value
  225.      given in the difference file.  If they differ, then it will print an
  226.      error message, and insert warnings at the end of the node list reports
  227.      and at the beginning of the created NODELIST.BBS file (if any).
  228.  
  229.      XlatList is controlled primarily by its own control file, which is
  230.      named "XLATLIST.CTL".  This file is free-format text, and can be
  231.      created with any normal text editor (such as EDLIN).  A semicolon
  232.      anywhere in the file marks the start of a comment, and everything from
  233.      the semicolon to the end of the line is ignored.
  234.  
  235.                  ___     XlatList is not case sensitive.  Anything in its control file or in
  236.      the node list or any of its arguments may be given in either uppercase
  237.      or lowercase or a combination of the two.
  238.  
  239.  
  240.      SEAdog                    Page 2                        XlatList
  241.      Following is a description of the possible statements that you can put
  242.      in a XlatList control file:
  243.  
  244.  
  245.      NODE <zone>:<net>/<node>     NODE <zone>:<net>/<node>
  246.  
  247.          This tells XlatList what your network address is.  This is
  248.          especially required if your node list contains multiple zones, as
  249.          XlatList will need to know what zone you are in.  This is also
  250.          used to determine the default network number for use elsewhere.
  251.  
  252.  
  253.      COUNTRY <n>     COUNTRY <n>
  254.  
  255.          This tells XlatList what country you are in.  The cost table and
  256.          the dialing table (see below) each have defaults for domestic and
  257.          international calls.  An international call is defined as one
  258.          where the country code is different than your own.  This defines
  259.          what your own country code is.  The default is "1" (United States)
  260.  
  261.  
  262.      FIDO     FIDO
  263.      SEADOG     SEADOG
  264.      OPUS     OPUS
  265.  
  266.          These tell XlatList who it is generating the node list for.  The
  267.          default is SEADOG.  If you are using XlatList to generate a node
  268.          list for a Fido BBS system, then your XLATLIST.CTL file should
  269.          contain a FIDO statement.  If you are generating a node list for
  270.          an Opus system, or for a Fido system earlier than version 12, then
  271.          your XLATLIST.CTL file sould contain an OPUS statement.
  272.  
  273.          The mode of operation of XlatList primarily controls the format of
  274.          the NODELIST.BBS node list file that is created.  The differences
  275.          are as follows:
  276.  
  277.          o         o    In SEAdog mode, the generated node list covers your own zone
  278.               only.  Any HUB prefixes found in the St. Louis node list are
  279.               retained, and any special prefixes defined in your
  280.               XLATLIST.CTL file (with the HUB, IGATE, and OGATE statements)
  281.               are added.  Any ZONE prefixes found in the St. Louis node
  282.               list are converted to REGION prefixes.
  283.  
  284.          o         o    In Opus mode, the generated node list is similar to that
  285.               produced in SEAdog mode, except that special prefixes defined
  286.               in your XLATLIST.CTL file are ignored.  Node list entries
  287.               with the HUB prefix will be preserved if in your own net, and
  288.               removed otherwise.
  289.  
  290.          o         o    In Fido mode, the generated node list is similar to that
  291.               produced in Opus mode, except that all zones will be included
  292.               and the ZONE prefixes will be retained.
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.      SEAdog                    Page 3                        XlatList
  301.      USERLIST     USERLIST
  302.      INTERLIST     INTERLIST
  303.      NOUSERLIST     NOUSERLIST
  304.  
  305.          These tell XlatList whether or not it should generate a directory
  306.          of the users (sysops) listed in the node list.  USERLIST says to
  307.          generate a directory of users in your own zone.  INTERLIST says to
  308.          generate a directory of all users in all zones.  NOUSERLIST says
  309.          not to generate a directory, and is the default.  The directory,
  310.          if any,  will be placed in a file called FIDOUSER.LST, and will be
  311.          in a format suitable for use as a SEAdog user directory.
  312.  
  313.          Since a given node list may contain duplicate entries, XlatList
  314.          will try to resolve the duplicates in an intelligent fashion.  The
  315.          exact method used by XlatList is somewhat complicated, but in
  316.          general for any given name XlatList will try to:
  317.  
  318.          o    Avoid listing an address that is marked DOWN or HOLD.
  319.  
  320.          o    Avoid listing an address in another zone.
  321.  
  322.          o    Give preference to an address in a network as opposed to an
  323.               address in a region.
  324.  
  325.          o    Avoid listing someone in their role as a host or hub.
  326.  
  327.          o    Choose a higher baud rate over a lower one.
  328.  
  329.          o    Give preference to an address that has continuous mail or
  330.               extended protocol, while trying to avoid an address that is
  331.               mail only.
  332.  
  333.          o    All else being equal, select the lower node number.
  334.  
  335.          Based on some or all of the above criteria, and possibly on other
  336.          criteria as well, XlatList will attempt to select the most
  337.          suitable address to list for every name in the node list.
  338.  
  339.          You must have a copy of Ben Baker's QSORT program for the USERLIST
  340.          or INTERLIST option to work.
  341.  
  342.  
  343.      ADDR <address> <name>     ADDR <address> <name>
  344.  
  345.          This statement is used to insert additional entries into the user
  346.          directory, or to force XlatList to select a given address instead
  347.          of what it would pick on its own.  Any sort of address may be
  348.          specified, including extended addresses.  Some examples are:
  349.  
  350.               addr 1/0 Ben Baker
  351.               addr 107/6.1 Thom Henderson
  352.               addr 132/101!ncoast!lovell Dale Lovell
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.      SEAdog                    Page 4                        XlatList
  361.      FIDOPRN     FIDOPRN
  362.      FIDOTXT     FIDOTXT
  363.      NOFIDOLIST     NOFIDOLIST
  364.  
  365.          These tell XlatList whether or not it should generate a human
  366.          readable report on what nodes are in your node list.  FIDOPRN says
  367.          to generate a full 132 column report, which is placed in a file
  368.          named NODELIST.PRN.  FIDOTXT says to create an abbreviated 80
  369.          column report, which is placed in a file named NODELIST.TXT.
  370.          NOFIDOLIST says not to generate any report at all, and is the
  371.          default.
  372.  
  373.          Both the FIDOPRN and FIDOTXT statements may be given, in which
  374.          case both reports are created.
  375.  
  376.  
  377.      INDEX     INDEX
  378.      SINDEX     SINDEX
  379.      NOINDEX     NOINDEX
  380.  
  381.          These tell XlatList whether or not it should add an index to the
  382.          end of the Fido listing.  Each line of the index identifies one
  383.          net or region, and shows which page it is on.  INDEX says to
  384.          create the index in the order that the nets and regions were
  385.          scanned.  SINDEX says to sort the index by network number.
  386.          NOINDEX says not to generate the index at all, and is the default.
  387.  
  388.          You must have a copy of Ben Baker's QSORT program in order for the
  389.          SINDEX option to work properly.
  390.  
  391.  
  392.      REPORT     REPORT
  393.      NOREPORT     NOREPORT
  394.  
  395.          These tell XlatList whether or not it should print its report
  396.          about how many nets, nodes, and so forth it scanned.  NOREPORT
  397.          says not to print the report.  REPORT says to print it, and is the
  398.          default.
  399.  
  400.          The report is printed at the end of the scan, when XlatList
  401.          finshes scanning all node lists.  The report can be redirected to
  402.          a file or to the printer.
  403.  
  404.  
  405.      COMMENTS     COMMENTS
  406.      NOCOMMENTS     NOCOMMENTS
  407.  
  408.          These tell XlatList whether or not to display comments from the
  409.          node list while compiling it.  COMMENTS says to display them.
  410.          NOCOMMENTS says not to, and is the default.  All comments marked
  411.          _  _  _  _     _         A, F, S, U, or ; are included.  The comments may be redirected to
  412.          the printer or to a file, along with the summary table printed by
  413.          XlatList at the end of the run.
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.      SEAdog                    Page 5                        XlatList
  421.      DASH     DASH
  422.      NODASH     NODASH
  423.  
  424.          These tell XlatList whether or not you want dashes stripped from
  425.          the phone numbers in your NODELIST.BBS file.  In some special
  426.          cases the sequence of digits being dialed exceeds the forty
  427.          character limit of Hayes-type modems.  Stripping out the dashes
  428.          shortens the number that must be dialed.  NODASH says to strip out
  429.          the dashes.  DASH says to leave them in place, and is the default.
  430.  
  431.  
  432.      ROUTE     ROUTE
  433.      NOROUTE     NOROUTE
  434.  
  435.          These tell XlatList whether or not to create temporary data files
  436.          for use by RouteGen.  ROUTE says to create the files.  NOROUTE
  437.          says not to, and is the default.  At present, the only temporary
  438.          file created is NODELIST.FON.
  439.  
  440.  
  441.      NODELIST     NODELIST
  442.      NONODELIST     NONODELIST
  443.  
  444.          These tell XlatList whether or not to create a NODELIST.BBS file.
  445.          NODELIST says to create it, and is the default.  NONODELIST says
  446.          not to create it.
  447.  
  448.      POINTS     POINTS
  449.      NOPOINTS     NOPOINTS
  450.  
  451.          These tell XlatList whether or not to create node list entries for
  452.          point net gateways.  A point net gateway is signalled by a PN:
  453.          flag in the comment field.  For example, a St. Louis node list
  454.          entry with a comment flag of "PN:2200" would be the public gateway
  455.          to point net number 2200.  Point net gateways are listed by adding
  456.          HOST entries to the end of the generated node list.  POINTS says
  457.          to do this.  NOPOINTS says not to do this, and is the default.
  458.  
  459.  
  460.      MAXBAUD <baud> [<flag> <baud> . . .]     MAXBAUD <baud> [<flag> <baud> . . .]
  461.  
  462.          This tells XlatList the maximum baud rate to allow in the node
  463.          list.  Any listed baud rate higher than <baud> will be set equal
  464.          to <baud> in the NODELIST.BBS file.
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.      SEAdog                    Page 6                        XlatList
  481.          The basic maximum baud rate can be followed by any number of
  482.          comment flag/alternate max baud rate pairs.  For example, the
  483.          statement:
  484.  
  485.               maxbaud 2400 HST 9600
  486.  
  487.          would tell XlatList that the maximum baud rate to allow in the
  488.          generated node list is 2400 baud, except that entries which have
  489.          an HST flag may be listed as high as 9600 baud.  Similarly:
  490.  
  491.               maxbaud 2400 HST 9600 ZAP 19200
  492.  
  493.          would work the same, and in addition allow entries with a ZAP flag
  494.          to be listed as high as 19200 baud.
  495.  
  496.  
  497.      MYLIST <filename> ...     MYLIST <filename> ...
  498.      PVTLIST <filename> ...     PVTLIST <filename> ...
  499.  
  500.          These tell XlatList the names of one or more St. Louis format node
  501.          lists to be read in addition to (and after) the main node list.
  502.          You would use these to add a private net to the main node list.
  503.          You may have as many MYLIST and PVTLIST statements in your control
  504.          file as you like, and they will be read in the order you give
  505.          them.  They differ in that lists named in a MYLIST statement are
  506.          included in the reports created by the FIDOPRN and FIDOTXT
  507.          statements, while lists named in a PVTLIST statement are not.
  508.  
  509.  
  510.      PUBLIST <listname> [<diffname>]     PUBLIST <listname> [<diffname>]
  511.  
  512.          XlatList normally looks for the public network list in a file
  513.          called NODEDIFF.nnn, and looks for node list changes in a file
  514.          called NODEDIFF.nnn (in each case the "nnn" is really a three
  515.          digit number).  The PUBLIST statement tells XlatList to use
  516.          different names instead.  The first argument is a name to look for
  517.          for a node list, and the second is the name that is used for the
  518.          corresponding difference file.  If you only give the name for the
  519.          node list, then XlatList will not look for a difference file.  You
  520.          may specify as many public lists as you like.
  521.  
  522.          For example, suppose that you normally compile your node list from
  523.          files called REGION13.nnn and REGION10.nnn.  The REGION13 list
  524.          could come as a set of changes called R-13DIFF.nnn, but the
  525.          REGION10 list is always distributed as a complete list.  The
  526.          statements to use would be:
  527.  
  528.               publist REGION13 R-13DIFF
  529.               publist REGION10
  530.  
  531.          If your XlatList control file does not contain any PUBLIST
  532.          statements at all, then XlatList will act as if you had told it:
  533.  
  534.               publist NODELIST NODEDIFF
  535.  
  536.  
  537.  
  538.  
  539.  
  540.      SEAdog                    Page 7                        XlatList
  541.      CLEANUP     CLEANUP
  542.  
  543.          When applying a difference file to a public node list, XlatList
  544.          will normally leave all of the files around.  Over time one can
  545.          accumulate quite a backlog of old node lists and difference files.
  546.          The CLEANUP statement tells XlatList to delete these old files
  547.                                                              ___         once they are no longer needed.  The old files will not be deleted
  548.          if the newly created file failed a CRC check.
  549.  
  550.  
  551.      IGATE [<net>/]<node> ...     IGATE [<net>/]<node> ...
  552.      OGATE [<net>/]<node> ...     OGATE [<net>/]<node> ...
  553.      GATE [<net>/]<node> ...     GATE [<net>/]<node> ...
  554.      HUB [<net>/]<node> ...     HUB [<net>/]<node> ...
  555.  
  556.          These are used to place SEAdog node list prefixes in a St. Louis
  557.          format node list.  Fido users will have no need of them.  These
  558.          have no effect in Fido mode.  SEAdog users should, at a minimum,
  559.          include an OGATE statement for their outbound host, if any.
  560.  
  561.  
  562.      PHONE [<net>/]<node> <number>     PHONE [<net>/]<node> <number>
  563.  
  564.          This is used to insert a phone number into the node list in place
  565.          of one that is already there.  For example, if the phone number
  566.          given in the list for node 107/8 was "-Unpublished-", and you
  567.          wanted to replace it with "1-201-472-8065", then you would say:
  568.  
  569.               PHONE 107/8 1-201-472-8065
  570.  
  571.          If you do not specify a net number, then your own net (as defined
  572.          in the NODE statement) is used.  You may have as many PHONE
  573.          statements as you like.
  574.  
  575.          You should always give phone numbers in their full form (as above)
  576.          in order for other statements (such as DIAL) to work properly.
  577.  
  578.  
  579.      BAUD [<net>/]<node> <baud>     BAUD [<net>/]<node> <baud>
  580.  
  581.          This is used to insert a baud rate into the node list in place of
  582.          one that is already there.  For example, if node 107/8 was listed
  583.          as being 1200 baud, but you wanted to send to him at 300 baud,
  584.          then you would say:
  585.  
  586.               BAUD 107/8 300
  587.  
  588.          If you do not specify a net number, then your own net (as defined
  589.          in the NODE statement) is used.  You may have as many BAUD
  590.          statements as you like.
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.      SEAdog                    Page 8                        XlatList
  601.      OZONE <zone>:<net> [<newnet>]     OZONE <zone>:<net> [<newnet>]
  602.  
  603.          This is used to insert nets from other zones into your own
  604.          generated node list.  For example, if you are in zone 1 but wish
  605.          to have net 500 of zone 2 appear in your generated node list, then
  606.          you would say:
  607.  
  608.               ozone 2:500
  609.  
  610.          Remember that net numbers may be duplicated across zones.  If your
  611.          own zone already has a net 500, then you will need to use a
  612.          different net number for the other net or it won't work right.
  613.  
  614.          For example, if you wanted net 500 of zone 2 to show up in your
  615.          generated node list as net 3210, then you would say:
  616.  
  617.               ozone 2:500 3210
  618.  
  619.          This statement has no effect in Fido mode.
  620.  
  621.  
  622.      DIAL [<domestic> [<international>]]     DIAL [<domestic> [<international>]]
  623.  
  624.          The DIAL statement marks the beginning of the dialing table.  It
  625.          can also take up to two optional arguments.  The first argument is
  626.          the default text to add to the phone number for all domestic
  627.          calls, while the second is the default for international calls.
  628.  
  629.          Each entry in the dialing table consists of a partial phone number
  630.          followed by a replacement string.  The partial phone number is
  631.          used to determine which replacements belong to which phone
  632.          numbers.  The table is scanned in sequence until an entry is found
  633.          which matches the corresponding portion of the original phone
  634.          number.  If no table entries match the original phone number, then
  635.          the appropriate default is used.  This should be clearer in a
  636.          moment.
  637.  
  638.          The replacement string can take any of the following forms:
  639.  
  640.               <prefix>
  641.               <prefix>/<suffix>
  642.               /<suffix>
  643.               /
  644.  
  645.          The <prefix> is added to the beginning of the phone number, and
  646.          the <suffix> is added to the end.
  647.  
  648.          When a default string is applied, this is all that happens.
  649.          However, when a table entry is applied, the initial part of the
  650.          phone number which matched the table is first stripped off.
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.      SEAdog                    Page 9                        XlatList
  661.          Here is an example of a dialing table:
  662.  
  663.               DIAL /-123 011-
  664.                    1-201-472-     8-   ;In house
  665.                    1-201-         /    ;New Jersey
  666.               END
  667.  
  668.          This table would cause the following translations:
  669.  
  670.          1)   1-201-694-3348 would become 694-3348.  Since it matches the
  671.               "1-201-" entry, the initial "1-201-" gets stripped off.  It's
  672.               replacement string is specifying no prefix and no suffix.
  673.  
  674.          2)   1-201-472-8065 would become 8-8065.  As before, the matching
  675.               digits are stripped off, but this time the replacement string
  676.               is specifying a new prefix of "8-".  Note that if the 1-201-
  677.               entry had come first, it would have been applied instead.
  678.  
  679.          3)   1-212-288-9076 does not match any table entry, so the default
  680.               domestic string is used, and it becomes 1-212-288-9076-123.
  681.               Since no table entry was used, no digits are stripped off.
  682.  
  683.          4)   31-8380-37156 also does not match any table entries, but this
  684.               number is in another country, so the international default is
  685.               used, and it becomes 011-31-8380-37156.
  686.  
  687.          One last example.  If you were in area code 201 and needed to dial
  688.          a "9" for long distance instead of a "1", here is how you would do
  689.          it:
  690.  
  691.               DIAL
  692.                    1-201-              ;Strip area code off local calls
  693.                    1-        9-        ;Prefix all else with a nine
  694.               END
  695.  
  696.  
  697.          SEAdog users may wish to use the equivalent DIAL statement in
  698.          their CONFIG.DOG file instead.  If the dialing table is used, then
  699.                                                                     ___         the DIAL statement in the SEAdog configuration file should not be
  700.          used, and vice versa.
  701.  
  702.  
  703.      COST [<domestic> [<international>]]     COST [<domestic> [<international>]]
  704.  
  705.          This statement marks the beginning of the cost table.  A series of
  706.          entries follows this statement, ending with an END statement.  Up
  707.          to two optional arguments may be supplied with the COST statement.
  708.          The first argument is the default cost per message for domestic
  709.          calls, and the second is the default cost per message for
  710.          international calls.  All costs are given in pennies.
  711.  
  712.          Each entry in the cost table consists of a partial phone number
  713.          followed by a cost per message in pennies for calling that number,
  714.          optionally followed by a maximum baud rate to use.  The partial
  715.          phone numbers are given in the same format as in the dialing
  716.          table, and are scanned the same way.
  717.  
  718.  
  719.  
  720.      SEAdog                   Page 10                        XlatList
  721.          Here's an example of a typical COST table:
  722.  
  723.               cost 22 300
  724.                   1-201-542- 20        ;Eatontown
  725.                   1-201-750- 13        ;Woodbridge
  726.                   1-201-963- 07   300  ;Jersey City
  727.  
  728.                   1-203-     20        ;Connecticut
  729.                   1-301-     20        ;Maryland
  730.                   1-503-     27        ;Oregon
  731.                   1-602-     26        ;Arizona
  732.                   1-703-     20        ;Virginia
  733.               end
  734.  
  735.  
  736.      INCLUDE <filename>     INCLUDE <filename>
  737.  
  738.          This causes XlatList to read commands from the named file.  When
  739.          the end of the named file is reached, XlatList will resume reading
  740.          the current file at the statement following the INCLUDE statement.
  741.  
  742.  
  743.  
  744.      Command Line Arguments     Command Line Arguments
  745.  
  746.      You can override most of the XLATLIST.CTL control file statements by
  747.      giving XlatList command line arguments when you run it.
  748.  
  749.      The following arguments change the operating mode:
  750.  
  751.          SEAdog         SEAdog mode (default)
  752.          FIDO           Fido v12 mode
  753.          OPUS           Fido v11 / Opus mode
  754.  
  755.      The following arguments select different sorts of output:
  756.  
  757.          COMments       Display node list comments.
  758.          ROUte          Create the ROUTEGEN data file.
  759.          PRNlist        Create a 132 column network report.
  760.          TXTlist        Create an 80 column network report.
  761.          INDex          Add an index to any network reports.
  762.          SINdex         Add a sorted index to any network reports.
  763.          NODelist       Create a NODELIST.BBS file.
  764.          USErlist       Create a domestic sysop directory.
  765.          INTlist        Create an international sysop directory.
  766.          CLEanup        Deletes old node lists and difference files.
  767.          POInts         Include point net gateways
  768.          REPort         Print a summary report
  769.  
  770.      The word "NO" anywhere on the command line causes all of the above
  771.      which follow to be reversed in meaning.  For example, if you wanted to
  772.      run XlatList telling it to produce a RouteGen data file, but not to
  773.      produce either of the network reports, you would type:
  774.  
  775.          xlatlist route no prnlist txtlist
  776.  
  777.  
  778.  
  779.  
  780.      SEAdog                   Page 11                        XlatList
  781.      Case is unimportant.  We've used capitals in the above lists to
  782.      indicate the minimum abbreviation.  For example, the previous example
  783.      could also be typed:
  784.  
  785.          xlatlist rou no prn txt
  786.  
  787.  
  788.      Finally, the FOR argument tells XlatList to use a different control
  789.      file instead of the usual XLATLIST.CTL.  For example, to run XlatList
  790.      under the control of a file named LAPTOP.CTL, you would type:
  791.  
  792.          xlatlist for laptop
  793.  
  794.  
  795.  
  796.      Multiple zones     Multiple zones
  797.  
  798.      _____     Zones are a high-order division of the FidoNet node list.  Zones and
  799.      countries are not related.  A zone might contain several countries,
  800.      and a country might contain several zones.
  801.  
  802.      Each zone is in effect its own node list.  Mail traffic between the
  803.                               ____ ________     zones is provided by the zone gateways.  Each zone's gateways to the
  804.      other zones are listed near the beginning of the node list for that
  805.      zone.  This is not the place for an extended discussion of zones, zone
  806.      gateways, and zone addressing.
  807.  
  808.      When XlatList processes a node list containing multiple zones, the
  809.      NODELIST.BBS file it creates will contain only those nodes which are
  810.      in your own zone, plus a few "administrative nodes" (such as the zone
  811.      gateways) from each of the other zones.  The user directory may
  812.      include other zones or not, as you wish.
  813.  
  814.      This does not apply to Fido mode, as Fido mode is geared to Fido
  815.      version 12 and later, which is able to handle a zone-based
  816.      NODELIST.BBS file.
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.      SEAdog                   Page 12                        XlatList
  841.                                     ROUTEGEN                                    ROUTEGEN
  842.  
  843.  
  844.  
  845.      RouteGen is a dedicated macro processor for use in creating routing
  846.      files.  In general, it passes along whatever was present in the input
  847.      file, expanding any macros it finds along the way.
  848.  
  849.      In its normal mode of operation RouteGen reads routing commands from a
  850.      control file called ROUTEGEN.CTL and places its output in a route file
  851.      called ROUTE.DOG.  This can be altered in several ways:
  852.  
  853.       1) The /U command line switch (see below) can be used to change the
  854.          name of the input file.  In this case, the name of the output file
  855.          also changes to match that of the new input file, but with an
  856.          extension of ".DOG".
  857.  
  858.       2) If RouteGen is placed in Opus mode, then the output file will be
  859.          named ROUTE.CTL.
  860.  
  861.       3) If RouteGen is placed in Fido mode, then instead of creating just
  862.          one output file with an extension of ".DOG", RouteGen will create
  863.          a separate route file for each schedule.  The filename extension
  864.          on each route file will match the schedule tag for the schedule it
  865.          contains.
  866.  
  867.       4) The FILE statement (see below) can be used to change the name (but
  868.          not the extension) of the output file being created.  You can have
  869.          more than one FILE statement, allowing multiple sets of routing
  870.          files to be created in one operation.
  871.  
  872.  
  873.      RouteGen is invoked with a statement of the form:
  874.  
  875.          routegen [<address>] [/M] [/S] [/U<filename>]
  876.  
  877.      <address> is a network address, in either net/node format or
  878.      zone:net/node format.  RouteGen does not use the zone number, nor does
  879.      it create interzone routing files at this time.  The interzone address
  880.      format is included only for compatibility with other programs.
  881.  
  882.      If an address is specified on the command line, then that address is
  883.      used in the same way and for the same things as the NODE statement in
  884.      a RouteGen control file.  Note that a NODE statement overrides any
  885.      address that may be given on the command line.
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.      SEAdog                   Page 13                        RouteGen
  901.      RouteGen also understands the following command line options:
  902.  
  903.          /U<filename>   This names an alternate control file to use instead
  904.                         of ROUTEGEN.CTL.  If no extension is given, then
  905.                         ".CTL" is assumed.  The output file created by
  906.                         RouteGen will have the same name as the alternate
  907.                         control file (but a different extension).  When
  908.                                                         __ ___                        operating RouteGen in Opus mode do not use a
  909.                         control file named ROUTE.CTL.
  910.  
  911.          /F             This tells RouteGen to operate in Fido mode, as
  912.                         opposed to its default SEAdog mode.  Note that a
  913.                         SEADOG or OPUS statement in the control file
  914.                         overrides this option.
  915.  
  916.          /O             This tells RouteGen to operate in Opus mode, as
  917.                         opposed to its default SEAdog mode.  Note that a
  918.                         SEADOG or FIDO statement in the control file
  919.                         overrides this option.
  920.  
  921.          /S             This tells RouteGen to operate in SEAdog mode,
  922.                         which is its default state anyway.  This option is
  923.                         included for completeness.
  924.  
  925.          /M             This causes RouteGen to display status information
  926.                         about its memory usage.  This can be useful for
  927.                         determining how a routing file got to be too
  928.                         complex.  See the section on advice and tips later
  929.                         in this manual.
  930.  
  931.          /T             This causes RouteGen to dump its symbol table at
  932.                         the end of the run.  We're not sure what good this
  933.                         would do you, but you might find it interesting.
  934.  
  935.      Option switches may be given in either uppercase or lowercase, and may
  936.      begin with either a slash or a dash.  They may also be bunched
  937.      together as long as the /U switch comes last.  For example, if you
  938.      wanted to run RouteGen on a control file named WASTE.CTL, and you
  939.      wanted to see memory usage and the symbol table, you could type:
  940.  
  941.          routegen -msuwaste
  942.  
  943.  
  944.  
  945.      RouteGen reads its control file line by line, and expects each line to
  946.      begin with a keyword followed by all of its arguments.  There are two
  947.      general categories of keywords:
  948.  
  949.          o    Control verbs         o    Control verbs; These are used to control RouteGen itself, and
  950.               will be described in detail below.
  951.  
  952.          o    Routing verbs         o    Routing verbs; These are the actual routing commands to the
  953.               mailer you are using, and are specific to it.  They should be
  954.               described in its documentation.  We will not attempt to
  955.               document them here.
  956.  
  957.  
  958.  
  959.  
  960.      SEAdog                   Page 14                        RouteGen
  961.      Routing verbs are usually followed by a list of network addresses.
  962.      The purpose of RouteGen is to make it easier to create and maintain
  963.      those lists of network addresses.
  964.  
  965.      RouteGen recognizes the following classes of routing verbs:
  966.  
  967.          o    Targeted verbs         o    Targeted verbs; These are routing instructions whose first
  968.               argument must be a single network address that is the target
  969.               of the routing action, possibly followed by a list of network
  970.               addresses that are the object of the routing action.  The
  971.               following targeted verbs are currently defined:
  972.  
  973.                    Route-to
  974.                    Arcdirect
  975.                    Archold
  976.                    Arccm
  977.  
  978.          o    Argmented verbs         o    Argmented verbs; These are routing instructions whose first
  979.               argument is something other than a network address, possibly
  980.               followed by a list of network addresses to which it applies.
  981.               The following argumented instructions are currently defined:
  982.  
  983.                    Script
  984.                    Password
  985.                    Redial
  986.  
  987.          o    Schedule statements         o    Schedule statements;  Right now the Schedule statement is a
  988.               special case all unto itself.  Maybe someday we can make a
  989.               general class out of it.  When operating in Fido mode it is a
  990.               fatal error to have any such statement before the first
  991.               SCHEDULE statement, or between the previous FILE statement
  992.               and its following SCHEDULE statement.
  993.  
  994.  
  995.          o    Everything else         o    Everything else;  Anything that isn't one of the above is the
  996.               general case.  RouteGen will consider it to consist of a one
  997.               word keyword followed by a list of network addresses.  The
  998.               majority of routing instructions fall into this category.
  999.  
  1000.  
  1001.      Any routing verb may be prefaced with the DON'T keyword.  The DON'T
  1002.      keyword is passed through literally by RouteGen.  Please check the
  1003.      documentation for your mailer to determine what routing verbs (if any)
  1004.      may be prefaced with DON'T.
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.      SEAdog                   Page 15                        RouteGen
  1021.      In general any routing verb may be followed by a list of network
  1022.      addresses.  Such a list consists of zero or more of the following:
  1023.  
  1024.          <net>/<node>        The address of any given node.
  1025.  
  1026.          <node>              The address of another node in your own
  1027.                              network.
  1028.  
  1029.          <net>/<lo>:<hi>     A list of all nodes in the specified range.
  1030.  
  1031.          <lo>:<hi>           A list of all nodes in the specified range in
  1032.                              your own network.
  1033.  
  1034.          "<literal>"         A quoted literal string.
  1035.  
  1036.          <macro>             A macro defining some list of addresses.
  1037.  
  1038.  
  1039.      Most of the power of RouteGen comes from the use of macros.  You can
  1040.      define your own macros by use of the DEFINE and ALSO statements
  1041.      (described later).  RouteGen also has many predefined macros built in.
  1042.      They are as follows:
  1043.  
  1044.      NET-nnn     NET-nnn
  1045.      REGION-nnn     REGION-nnn
  1046.  
  1047.          These are equivalent, and are replaced with all of the nodes in
  1048.          the given net.
  1049.  
  1050.          Example:
  1051.  
  1052.               No-route net-103
  1053.  
  1054.  
  1055.      AREA-aaa[-eee[:eee][,eee[:eee]...]     AREA-aaa[-eee[:eee][,eee[:eee]...]
  1056.  
  1057.          This is replaced with all of the nodes whose phone numbers begin
  1058.          with "1-aaa-", or with "1-aaa-eee-" if an exchange is specified.
  1059.          Multiple exchanges may be specified, and ranges of exchanges may
  1060.          be given.
  1061.  
  1062.          Example:
  1063.  
  1064.               Send-to area-201
  1065.               Hold area-201 except area-201-472:474,694,776:778
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.      SEAdog                   Page 16                        RouteGen
  1081.      COUNTRY-c[-aaa[-eee[:eee][,eee[:eee]]]]     COUNTRY-c[-aaa[-eee[:eee][,eee[:eee]]]]
  1082.  
  1083.          This is replaced with all of the nodes whose phone numbers begin
  1084.          with "c", or with "c-aaa-" if an area code is specified, or with
  1085.          "c-aaa-eee-" if both an area code and an exchange are specified.
  1086.          Note that "COUNTRY-1-201" is equivalent to "AREA-201".  Multiple
  1087.          exchanges and ranges of exchanges may be specified as with the
  1088.          AREA macro.
  1089.  
  1090.          Example:
  1091.  
  1092.               Hold country-51
  1093.  
  1094.  
  1095.      FLAG-<x>     FLAG-<x>
  1096.      TAG-<x>     TAG-<x>
  1097.  
  1098.          These are equivalent, and are replaced with all of the nodes whose
  1099.          node list entries contain the string <x>.  Neither case nor
  1100.          position is important.  For example, "flag-XP" would be replaced
  1101.          by a list of all nodes which contain the string "XP" anywhere in
  1102.          their flags field.  The flags field is the rightmost column of the
  1103.          wide Fido report produced by XlatList.
  1104.  
  1105.          Example:
  1106.  
  1107.               Send-to flag-#CM
  1108.  
  1109.      HUB-<node>     HUB-<node>
  1110.      HUB-<net/node>     HUB-<net/node>
  1111.  
  1112.          This is replaced by all of the nodes whose hub (as specified in
  1113.          the St. Louis format node list) is the named node.  The hub node
  1114.          is included in the list.  If you do not specify a net, then your
  1115.          own net is assumed.  For example, "hub-300" would be replaced by a
  1116.          list of all nodes in your own net who have node 300 in your net as
  1117.          their hub.
  1118.  
  1119.          Example:
  1120.  
  1121.               Forward-for hub-200
  1122.  
  1123.  
  1124.      LIST-<filename>     LIST-<filename>
  1125.  
  1126.          This is replaced by all of the nodes referred to in the specified
  1127.          file.  Any word in the file which "looks like" a network address
  1128.          (two numbers separated by a slash) will be included in the list.
  1129.          All other words are ignored.  This is specifically designed to
  1130.          allow the use of "AREAS.BBS" in creating route files.
  1131.  
  1132.          Example:
  1133.  
  1134.               No-route list-AREAS.BBS
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.      SEAdog                   Page 17                        RouteGen
  1141.      BAUD-<rate>     BAUD-<rate>
  1142.  
  1143.          This is replaced by a list of all nodes which are listed at the
  1144.          given baud rate.  Only nodes whose listed baud rate in the node
  1145.          list exactly matches the rate stated will be listed.  Nodes with
  1146.          higher or lower baud rates will not be included.
  1147.  
  1148.          Example:
  1149.  
  1150.               Send-to baud-9600
  1151.  
  1152.  
  1153.      AKA-<node>     AKA-<node>
  1154.      AKA-<net>/<node>     AKA-<net>/<node>
  1155.      ALTER-<node>     ALTER-<node>
  1156.      ALTER-<net>/<node>     ALTER-<net>/<node>
  1157.  
  1158.          These are equivalent, and are replaced by the alternate address of
  1159.          the specified node.  If you do not specify a network number, then
  1160.          your own network is assumed.  The specified node must have an AKA:
  1161.          flag in the comment flags field of his St. Louis node list entry.
  1162.  
  1163.          For example, suppose that node 107/300 has the comment flag
  1164.          "AKA:312" in his node list entry.  In that case, the statement:
  1165.  
  1166.               Hold aka-107/300
  1167.  
  1168.          would be replaced by:
  1169.  
  1170.               Hold 107/312
  1171.  
  1172.          As an example of usage, suppose that all nodes under the hub
  1173.          107/300 are supposed to hold their mail for pickup by 107/300.
  1174.                                                              ____         But "107/300" is the hub's alternate address -- his real address
  1175.          is 107/312.  So in his node list entry he puts an "AKA:312", and
  1176.          all the nodes under him use the routing statements:
  1177.  
  1178.               Schedule B
  1179.                    Route-to aka-300 ALL
  1180.                    Send-to aka-300
  1181.                    Hold aka-300
  1182.  
  1183.  
  1184.      ALL     ALL
  1185.  
  1186.          This is replaced with all of the nodes in the net.  If possible,
  1187.          it will be abbreviated to the short form, "ALL".
  1188.  
  1189.          Example:
  1190.  
  1191.               Give-to all
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.      SEAdog                   Page 18                        RouteGen
  1201.      A <list> may contain the keywords EXCEPT and AND.  These are used as
  1202.      follows:
  1203.  
  1204.          <list1> EXCEPT <list2>
  1205.  
  1206.      results in a list of all addresses given in <list1> which are not also
  1207.      given in <list2>.
  1208.  
  1209.          <list1> AND <list2>
  1210.  
  1211.      results in a list of all addresses given in <list1> which are also
  1212.      given in <list2>.
  1213.  
  1214.          <list1> AND <list2> AND <list3>
  1215.  
  1216.      results in a list of all addresses which are given in all three lists.
  1217.  
  1218.      EXCEPT and AND may be used together, in which case EXCEPT is evaluated
  1219.      first.  For example:
  1220.  
  1221.          <list1> EXCEPT <list2> AND <list3>
  1222.  
  1223.      results in a list of all addresses given in both <list1> and <list3>,
  1224.      but not in <list2>.
  1225.  
  1226.  
  1227.                 ___     You should not use EXCEPT in conjunction with metanodes like OURNET,
  1228.      HOSTS, and so forth (except for the ALL metanode, see above).
  1229.      Metanodes are not translated by RouteGen, so saying something like:
  1230.  
  1231.          ournet except 107/3
  1232.  
  1233.      will not work as you might expect.  Use the equivalent macro in
  1234.      RouteGen instead.
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.      SEAdog                   Page 19                        RouteGen
  1261.                              RouteGen Control Verbs                             RouteGen Control Verbs
  1262.  
  1263.  
  1264.      We will now describe in detail the control verbs which are used to
  1265.      control how RouteGen works and what it does.  As before, each
  1266.      statement is one line consisting of the control verb followed by its
  1267.      arguments.  The following control verbs are currently defined:
  1268.  
  1269.  
  1270.      NODE <net>/<node>     NODE <net>/<node>
  1271.      NODE <zone>:<net>/<node>     NODE <zone>:<net>/<node>
  1272.  
  1273.          This tells RouteGen what your network address is.  If you use any
  1274.          of the conditional statements (see below),  then you should be
  1275.          careful to ensure that you have the correct address here.
  1276.          Otherwise, it is sufficient if the net number is correct.
  1277.  
  1278.          RouteGen makes no use of the zone number, nor can RouteGen create
  1279.          interzone routing files.  The interzone format is provided solely
  1280.          for compatibility with other programs.
  1281.  
  1282.  
  1283.      SEADOG     SEADOG
  1284.      FIDO     FIDO
  1285.      OPUS     OPUS
  1286.  
  1287.          These tell RouteGen what mode to operate in.  FIDO says to tailor
  1288.          the output to the needs of the Fido BBS system.  OPUS says to
  1289.          tailor the output to the needs of the OMMM packetizer.  SEADOG
  1290.          says to tailor it to the SEAdog Electronic Mail system, and is the
  1291.          default.
  1292.  
  1293.  
  1294.      FILE <name>     FILE <name>
  1295.  
  1296.          This tells RouteGen what name to use on future output files.  It
  1297.          also causes the current output file to be closed.  In SEADOG mode
  1298.          it causes the next output file to be opened immediately with an
  1299.          extension of ".DOG".  In OPUS mode it causes the next output file
  1300.                                                                 __ _______         to be opened immediately with an extension of ".CTL".  Be careful
  1301.          when picking a file name while operating in OPUS mode, or you
  1302.          might trash another control file.
  1303.  
  1304.  
  1305.      INCLUDE <name>     INCLUDE <name>
  1306.  
  1307.          This tells RouteGen to read additional routing instructions from
  1308.          the named file.  If no extension is specified, ".CTL" is assumed.
  1309.          When the end of the named file is reached RouteGen will resume
  1310.          reading the current file at the statement after the INCLUDE
  1311.          statement.  The file being included may include additional files,
  1312.                                        __ _________         which may include more files, ad infinitum (limited only by
  1313.          memory).
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.      SEAdog                   Page 20                        RouteGen
  1321.      DEFINE <name> <list>     DEFINE <name> <list>
  1322.  
  1323.          This is used to define your own macros, and is quite powerful.
  1324.          The <list> is translated immediately, and all future references to
  1325.          <name> will be replaced with the list.
  1326.  
  1327.          The entire definition must fit on one line, but you can define
  1328.          macros in terms of themselves and other macros, so the resulting
  1329.          list can be quite large indeed.  See also the ALSO command, below.
  1330.  
  1331.  
  1332.      ALSO <list>     ALSO <list>
  1333.  
  1334.          This is used to add to the definition of the previously defined
  1335.          macro, thus allowing macro definitions to span more than one line.
  1336.          For example:
  1337.  
  1338.               define big 107/100 107/200 107/300
  1339.               also 107/400 107/500
  1340.  
  1341.          The first statement defines a macro called BIG as meaning a list
  1342.          of the three given addresses.  The second line adds two more
  1343.          addresses to the definition of BIG, resulting in a macro called
  1344.          BIG that means a list of all five addresses.
  1345.  
  1346.          You may have as many ALSO statements as you like that memory
  1347.          constraints will allow.
  1348.  
  1349.  
  1350.      SCHEDULE <tag> [<list>]     SCHEDULE <tag> [<list>]
  1351.  
  1352.          In Fido mode this causes the current output file to be closed, and
  1353.          a new one opened with an extension of ".<tag>".  In SEAdog mode
  1354.          the current output file is kept.  Any macros in the <list> are
  1355.          expanded, and the resulting SCHEDULE statement is output.
  1356.  
  1357.  
  1358.      DISPLAY <list>     DISPLAY <list>
  1359.  
  1360.          This causes the network addresses comprising the <list> to be
  1361.          displayed on the screen.
  1362.  
  1363.  
  1364.      NULL <list>     NULL <list>
  1365.  
  1366.          This causes the network addresses comprising the <list> to be
  1367.          written to the output file with no keyword.  This can be handy for
  1368.          creating mailing lists.
  1369.  
  1370.  
  1371.      IF <condition>     IF <condition>
  1372.      IF NOT <condition>     IF NOT <condition>
  1373.  
  1374.          This is used to make parts of a RouteGen control file conditional.
  1375.          This will only work when you are using a ".FON" file created by
  1376.          XlatList (using the "ROUTE" control statement, q.v.), otherwise
  1377.          the condition is undefined.  The <condition> depends on your own
  1378.  
  1379.  
  1380.      SEAdog                   Page 21                        RouteGen
  1381.          node number, as specified in the "NODE" statement or on the
  1382.          command used to invoke RouteGen.  If you have not defined your own
  1383.          network address, then the results are undefined.
  1384.  
  1385.          The following conditionals are currently defined:
  1386.  
  1387.          IGATE         IGATE          True if you are the inbound gateway for your
  1388.                         network.
  1389.  
  1390.          HOST         HOST           Same as IGATE.  Note that FidoNet hosts are
  1391.                         sensibly equivalent to SEAdog inbound gateways.
  1392.  
  1393.          OGATE         OGATE          True if you are the outbound gateway for your
  1394.                         network.  Not defined in Fido mode.
  1395.  
  1396.          HUB         HUB            True if you are a hub in your network.  Not defined
  1397.                         in Fido mode.
  1398.  
  1399.          LOCAL         LOCAL          True if you are none of the above.
  1400.  
  1401.          NODE <list>         NODE <list>    True if you are a member of <list>, where <list> is
  1402.                         a list of one or more nodes.
  1403.  
  1404.          ANY <list>         ANY <list>     True if the specified list contains any addresses.
  1405.  
  1406.          FLAG <xx>         FLAG <xx>      True if your own node list entry has <xx> in its
  1407.                         comment flags field.
  1408.  
  1409.          TAG <xx>         TAG <xx>       Same as FLAG.
  1410.  
  1411.          SEADOG         SEADOG         True if RouteGen is currently in SEAdog mode.
  1412.  
  1413.          FIDO         FIDO           True if RouteGen is currently in Fido mode.
  1414.  
  1415.          OPUS         OPUS           True if RouteGen is currently in Opus mode.
  1416.  
  1417.          Preceding any of these with the keyword NOT reverses the logic of
  1418.          the test.  For example:
  1419.  
  1420.               if not any net-103
  1421.  
  1422.          is true only if there are no nodes in network 103.
  1423.  
  1424.  
  1425.      ELSE [<statement>]     ELSE [<statement>]
  1426.  
  1427.          This signals the converse of a previous IF.  The statement
  1428.          following the word ELSE is optional.  If it is given, then no
  1429.          ENDIF is required.
  1430.  
  1431.  
  1432.      ENDIF     ENDIF
  1433.  
  1434.          This signals the end of a previous IF statement.
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.      SEAdog                   Page 22                        RouteGen
  1441.                               ROUTEGEN CONDITIONALS                              ROUTEGEN CONDITIONALS
  1442.  
  1443.      The IF, ELSE, and ENDIF statements all work together pretty much as
  1444.      you'd expect, and may be nested as deeply as you like that memory
  1445.      constraints will allow.
  1446.  
  1447.      Here's an example of the use of conditionals:
  1448.  
  1449.          if host
  1450.               forward-to ournet
  1451.          else if ogate
  1452.               forward-for ournet
  1453.          else if hub
  1454.               if node 100
  1455.                    forward-to 100:199
  1456.               else if node 200
  1457.                    forward-to 100:299
  1458.               else if node 300
  1459.                    forward-to 300:399
  1460.               else if node 400
  1461.                    if any 400:499
  1462.                         forward-to 400:499
  1463.                    endif
  1464.               endif
  1465.          else poll 100
  1466.  
  1467.  
  1468.      The ELSE statement can take any of three basic forms.  Whether or not
  1469.      an ENDIF will be required depends on which form of ELSE is used, as
  1470.      follows:
  1471.  
  1472.       1) ELSE                An ENDIF will be required.
  1473.  
  1474.       2) ELSE IF             An ENDIF will be required, unless another ELSE
  1475.                              clause follows this one.
  1476.  
  1477.       3) ELSE <statement>    An ENDIF is not required.
  1478.  
  1479.  
  1480.      This sounds strange, but with any luck it'll be intuitively obvious.
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.      SEAdog                   Page 23                        RouteGen
  1501.                               NODE LIST SIZE LIMITS                              NODE LIST SIZE LIMITS
  1502.  
  1503.  
  1504.  
  1505.      XlatList has no limit on the size of the node list that it can
  1506.      process.  It handles a node list in serial fashion, and can thus
  1507.      properly handle a list of any size.
  1508.  
  1509.                                   ____     RouteGen, on the other hand, does have an upper limit on the size of
  1510.      the node list which it can handle.  By the very nature of what it is
  1511.      doing, it must be able to create and use a table of all of the nodes
  1512.      in the node list.  At this time that table is kept in memory for
  1513.      reasons of speed.  There are no provisions for spooling the table to
  1514.      disk if it grows too large to hold in memory.  Table space is
  1515.      dynamically allocated as it is needed, so there is no defined upper
  1516.      limit.  Instead, it is limited by the total amount of memory which is
  1517.      available when RouteGen is run.  RouteGen will abort with an error
  1518.      message if the node list is too large to process.
  1519.  
  1520.      In addition, as macros are defined they too are held in memory.  It is
  1521.      quite possible for a routing control file of modest length to define
  1522.      macros of such size that they cannot all be held in memory at one
  1523.      time.  RouteGen will abort with an error message if the routing
  1524.      control file is too complex to process.
  1525.  
  1526.  
  1527.      You should try to avoid creating route files that define very large
  1528.      macros.  By this we mean macros which evaluate to a very long list of
  1529.      nodes.  In particular, if your route file contained:
  1530.  
  1531.          define st-louis net-100 1/0 1/2 1/107
  1532.          define outbound 100/10
  1533.          define world all except st-louis
  1534.  
  1535.          schedule c
  1536.            send-to outbound
  1537.            route-to outbound world
  1538.  
  1539.          schedule d
  1540.            send-to world
  1541.            route-to outbound world
  1542.  
  1543.      it may work, but it probably isn't a good idea.  In this particular
  1544.      case, the macro "world" is being defined as a very large list of
  1545.      nodes.  A large list like this has the following disadvantages:
  1546.  
  1547.          1) It requires a lot of memory to define.
  1548.  
  1549.          2) It takes a fair amount of processor time to define.
  1550.  
  1551.          3) It will generate a very large route file, which will consume
  1552.             much disk space.
  1553.  
  1554.          4) It will take longer for your mail server to set up a mail
  1555.             event, since it will have to scan and process a very large
  1556.             route file.
  1557.  
  1558.  
  1559.  
  1560.      SEAdog                   Page 24                        RouteGen
  1561.      Here's a better way to get the same result:
  1562.  
  1563.          define st-louis net-100 1/0 1/2 1/107
  1564.          define outbound 100/10
  1565.  
  1566.          schedule c
  1567.            send-to outbound
  1568.            route-to outbound ALL
  1569.            no-route st-louis
  1570.  
  1571.          schedule d
  1572.            send-to ALL
  1573.            route-to outbound ALL
  1574.            don't send-to st-louis
  1575.  
  1576.      This example uses the keyword "ALL", but "ALL" isn't expanded unless
  1577.      you use the "ALL EXCEPT" construct.  "ALL EXCEPT" is perfectly legal,
  1578.      but as a general rule you should try to avoid using it.
  1579.  
  1580.  
  1581.      If you are using SEAdog, then here's another trick you can use:
  1582.  
  1583.          define st-louis net-100 1/0 1/2 1/107
  1584.          define outbound 100/10
  1585.  
  1586.          schedule c
  1587.            send-to outbound
  1588.            route-to outbound ALL
  1589.            except st-louis
  1590.  
  1591.          schedule d
  1592.            send-to ALL
  1593.            route-to outbound ALL
  1594.            except st-louis
  1595.  
  1596.      In this case RouteGen will treat the EXCEPT as a routing verb, and
  1597.      thus not expand the ALL keywords.  SEAdog, on the other hand, does not
  1598.      read the routing file in a line-by-line fashion, and will thus
  1599.      properly execute the commands.
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.      SEAdog                   Page 25                        RouteGen
  1621.                                 LIMITED WARRANTY
  1622.  
  1623.  
  1624.      IMPORTANT NOTICE:     IMPORTANT NOTICE: Any use of this software for any period of time for
  1625.      any purpose whatsoever constitutes your unqualified acceptance of this
  1626.      LICENSE and subjects you to all of the terms and conditions set forth
  1627.      below:
  1628.  
  1629.      System Enhancement Associates, Inc. ("SEA") warrants to any Licensee
  1630.      that acquires the program from SEA or an authorized SEA representative
  1631.      ONLY that:
  1632.  
  1633.       1) All diskettes SEA provides constitute an accurate duplication of
  1634.          the software and SEA will replace any diskette found to be
  1635.          defective within 30 days from date of acquisition.  SEA will not
  1636.          honor this warranty if the diskette has been subjected to physical
  1637.          abuse, or used in defective or non-compatible equipment.
  1638.  
  1639.       2) SEA's software will perform substantially as described in the
  1640.          documentation SEA regularly supplies with that software, if
  1641.          operated as prescribed in such documentation including the
  1642.          hardware and software environment specified.
  1643.  
  1644.       3) If a significant defect in any program is found, Licensee's only
  1645.          remedy shall be to receive refund of the actual fee Licensee paid
  1646.          for such defective program.  In no event will such a refund exceed
  1647.          the fee SEA charges for such program.
  1648.  
  1649.       4) SEA makes no warranty or representation that the software will be
  1650.          error free nor that its use by Licensee will be uninterrupted.
  1651.  
  1652.      Except as provided above, SEA disclaims all other warranties, either
  1653.      express or implied, including but not limited to any implied warranty
  1654.      of merchantability or fitness for any particular purpose.
  1655.  
  1656.      Licensee agrees to take full responsibility for the selection of and
  1657.      any use whatsoever made of the software.
  1658.  
  1659.      IN NO EVENT WILL SEA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING
  1660.      WITHOUT LIMITATION DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
  1661.      INTERRUPTION, LOSS OF BUSINESS INFORMATION OR THE LIKE) ARISING OUT OF
  1662.      THE USE OF, INTERRUPTION IN THE USE OF, OR INABILITY TO USE THIS
  1663.      SOFTWARE, EVEN IF SEA HAS BEEN ADVISED OF ANY POSSIBILITY OR
  1664.      LIKELYHOOD OF SUCH DAMAGES.
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.      SEAdog                   Page 26                        Warranty
  1681.